package day04;

// 数组中第k大元素

import java.util.PriorityQueue;

public class Main1 {
    public int findKthLargest(int[] nums, int k) {
        // 首先建立小根堆（大小只有k个元素）
        PriorityQueue<Integer> queue = new PriorityQueue<>();
        // 遍历元素，放入小根堆【注意大小限制】
        for (int x : nums) {
            // 将元素添加到堆中
            queue.add(x);
            // 维护堆的k个元素，超出则删除堆顶的最小元素
            // 我需要的是第k大，也就是尽量保留大的，从大的数的第k个就是需要的
            if(queue.size() > k) {
                queue.poll(); // 直接删除堆顶元素
            }
        }
        // 最后堆顶元素就是所求的元素
        return queue.peek();
    }

    public static void main(String[] args) {

    }
}
